home *** CD-ROM | disk | FTP | other *** search
- /*
- File: MachineExceptions.h
-
- Contains: Processor Exception Handling Interfaces .
-
- Version: Technology: System 7.5
- Package: Universal Interfaces 2.0 in “MPW Latest” on ETO #17
-
- Copyright: © 1984-1995 by Apple Computer, Inc.
- All rights reserved.
-
- Bugs?: If you find a problem with this file, use the Apple Bug Reporter
- stack. Include the file and version information (from above)
- in the problem description and send to:
- Internet: apple.bugs@applelink.apple.com
- AppleLink: APPLE.BUGS
-
- */
-
- #ifndef __MACHINEEXCEPTIONS__
- #define __MACHINEEXCEPTIONS__
-
-
- #ifndef __TYPES__
- #include <Types.h>
- #endif
- /* #include <ConditionalMacros.h> */
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- #if PRAGMA_ALIGN_SUPPORTED
- #pragma options align=power
- #endif
-
- #if PRAGMA_IMPORT_SUPPORTED
- #pragma import on
- #endif
-
- typedef KernelID AreaID;
-
- /* Machine Dependent types for PowerPC: */
- struct MachineInformationPowerPC {
- UnsignedWide CTR;
- UnsignedWide LR;
- UnsignedWide PC;
- unsigned long CR;
- unsigned long XER;
- unsigned long MSR;
- };
- typedef struct MachineInformationPowerPC MachineInformationPowerPC;
-
- struct RegisterInformationPowerPC {
- UnsignedWide R0;
- UnsignedWide R1;
- UnsignedWide R2;
- UnsignedWide R3;
- UnsignedWide R4;
- UnsignedWide R5;
- UnsignedWide R6;
- UnsignedWide R7;
- UnsignedWide R8;
- UnsignedWide R9;
- UnsignedWide R10;
- UnsignedWide R11;
- UnsignedWide R12;
- UnsignedWide R13;
- UnsignedWide R14;
- UnsignedWide R15;
- UnsignedWide R16;
- UnsignedWide R17;
- UnsignedWide R18;
- UnsignedWide R19;
- UnsignedWide R20;
- UnsignedWide R21;
- UnsignedWide R22;
- UnsignedWide R23;
- UnsignedWide R24;
- UnsignedWide R25;
- UnsignedWide R26;
- UnsignedWide R27;
- UnsignedWide R28;
- UnsignedWide R29;
- UnsignedWide R30;
- UnsignedWide R31;
- };
- typedef struct RegisterInformationPowerPC RegisterInformationPowerPC;
-
- struct FPUInformationPowerPC {
- UnsignedWide Registers[32];
- unsigned long FPSCR;
- unsigned long Reserved;
- };
- typedef struct FPUInformationPowerPC FPUInformationPowerPC;
-
-
- enum {
- writeReference = 0,
- readReference = 1,
- fetchReference = 2
- };
-
- typedef unsigned long MemoryReferenceKind;
-
- struct MemoryExceptionInformation {
- AreaID theArea;
- LogicalAddress theAddress;
- OSStatus theError;
- MemoryReferenceKind theReference;
- };
- typedef struct MemoryExceptionInformation MemoryExceptionInformation;
-
-
- enum {
- unknownException = 0,
- illegalInstructionException = 1,
- trapException = 2,
- accessException = 3,
- unmappedMemoryException = 4,
- excludedMemoryException = 5,
- readOnlyMemoryException = 6,
- unresolvablePageFaultException = 7,
- privilegeViolationException = 8,
- traceException = 9,
- instructionBreakpointException = 10,
- dataBreakpointException = 11,
- integerException = 12,
- floatingPointException = 13,
- stackOverflowException = 14,
- terminationException = 15
- };
-
- typedef unsigned long ExceptionKind;
-
- union ExceptionInfo {
- MemoryExceptionInformation *memoryInfo;
- };
- typedef union ExceptionInfo ExceptionInfo;
-
- struct ExceptionInformationPowerPC {
- ExceptionKind theKind;
- MachineInformationPowerPC *machineState;
- RegisterInformationPowerPC *registerImage;
- FPUInformationPowerPC *FPUImage;
- ExceptionInfo info;
- };
- typedef struct ExceptionInformationPowerPC ExceptionInformationPowerPC;
-
- #if GENERATINGPOWERPC
- typedef ExceptionInformationPowerPC ExceptionInformation;
-
- typedef MachineInformationPowerPC MachineInformation;
-
- typedef RegisterInformationPowerPC RegisterInformation;
-
- typedef FPUInformationPowerPC FPUInformation;
-
- #endif
- /* Note: An ExceptionHandler is NOT a UniversalProcPtr.
- It must be a native function pointer with NO routine descriptor. */
- typedef OSStatus (*ExceptionHandler)(ExceptionInformationPowerPC *theException);
- /* Routine for installing per-process exception handlers */
- extern pascal ExceptionHandler InstallExceptionHandler(ExceptionHandler theHandler);
-
- #if PRAGMA_IMPORT_SUPPORTED
- #pragma import off
- #endif
-
- #if PRAGMA_ALIGN_SUPPORTED
- #pragma options align=reset
- #endif
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif /* __MACHINEEXCEPTIONS__ */
-